It is commonplace for complex systems (e.g., servers) to be constructed of a plurality of integrated circuits (ICs), e.g., chipsets. A situation can arise where it is desired that a subject IC support certain functions/commands which include specialized functions/commands, while a different IC interconnected to the subject IC supports some but not all of the subject ICs functions/commands. Accordingly, it is useless to transfer a specialized command from the subject IC to the different IC, given the fact that the different IC does not recognize/support the specialized function/command.
Turning now to one non-exhaustive example to aid in understanding, this disclosure will use a “flush” specialized function/command for purposes of discussion/explanation. By “flush”, it is meant, for example, that an IC will cause all internal pre-existing commands to be purged/completed whenever a flush command is issued. One example where a flush feature/command might be useful, is to cause/force an IC to complete all pre-existing commands so that other components within the complex system might poll stabilized/completed status/data within the IC's internal registers/memory or within main memory. A particular example would be a system where if a main system processor wanted to poll information within registers and/or main memory with respect to a graphics arrangement of the system, the graphics arrangement could be forced to flush and complete all pre-existing commands.
Turning now to discussion of an example background system which is helpful for understanding, FIG. 1 illustrates a first IC1 interconnected via a first interface 11 (e.g., a predetermined bus) to a second IC2 which, in turn, is interconnected via a second interface I2 (e.g., a predetermined bus) to a MEMORY. The IC1 has a plurality of queues QUEUE#1, . . . QUEUE#N. As to functions/commands available, for simplicity and brevity of discussion, suppose that IC1 supports READ, WRITE and FLUSH commands, while the IC2 only supports READ and WRITE commands. Again, it is useless to transfer the FLUSH specialized command from the subject IC1 to the different IC2, given the fact that the different IC2 does not recognize/support the specialized FLUSH function/command. Further, even if preexisting commands within the plurality of queues QUEUE#1, . . . QUEUE#N of IC1 are outputted to IC2 for servicing, IC2 might not be able to give IC1 any feedback as to when all FLUSH-induced commands have been completed, i.e., again given the fact that the different IC2 does not recognize/support the specialized FLUSH function/command, may not even know that a FLUSH function is being performed, and/or may not know the importance of ordering of commands coming out of IC1.
One solution would be to redesign IC2 to include arrangements to recognize/support the specialized function/commands of IC1. However, redesign may be undesirable/impractical for a number of reasons. For example, IC2 may be a preexisting IC (e.g., implemented in millions of systems) for which redesign/replacement/retrofitting would not be cost effective and/or would be disruptive. Alternatively, IC1 might be an optional IC which is not included/demanded in a sufficient number of systems so as to justify the design cost and chip real estate of dedicated arrangements within the IC2 for supporting IC1's specialized functions/commands.